home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / program / gcc / ixemul-4.lha / ixemul-41.4 / include / rpc / rpc_msg.h < prev    next >
C/C++ Source or Header  |  1994-02-23  |  4KB  |  188 lines

  1. /* @(#)rpc_msg.h    2.1 88/07/29 4.0 RPCSRC */
  2. /*
  3.  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  4.  * unrestricted use provided that this legend is included on all tape
  5.  * media and as a part of the software program in whole or part.  Users
  6.  * may copy or modify Sun RPC without charge, but are not authorized
  7.  * to license or distribute it to anyone else except as part of a product or
  8.  * program developed by the user.
  9.  * 
  10.  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  11.  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  12.  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
  13.  * 
  14.  * Sun RPC is provided with no support and without any obligation on the
  15.  * part of Sun Microsystems, Inc. to assist in its use, correction,
  16.  * modification or enhancement.
  17.  * 
  18.  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  19.  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
  20.  * OR ANY PART THEREOF.
  21.  * 
  22.  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  23.  * or profits or other special, indirect and consequential damages, even if
  24.  * Sun has been advised of the possibility of such damages.
  25.  * 
  26.  * Sun Microsystems, Inc.
  27.  * 2550 Garcia Avenue
  28.  * Mountain View, California  94043
  29.  */
  30. /*      @(#)rpc_msg.h 1.7 86/07/16 SMI      */
  31.  
  32. /*
  33.  * rpc_msg.h
  34.  * rpc message definition
  35.  *
  36.  * Copyright (C) 1984, Sun Microsystems, Inc.
  37.  */
  38.  
  39. #define RPC_MSG_VERSION        ((u_long) 2)
  40. #define RPC_SERVICE_PORT    ((u_short) 2048)
  41.  
  42. /*
  43.  * Bottom up definition of an rpc message.
  44.  * NOTE: call and reply use the same overall stuct but
  45.  * different parts of unions within it.
  46.  */
  47.  
  48. enum msg_type {
  49.     CALL=0,
  50.     REPLY=1
  51. };
  52.  
  53. enum reply_stat {
  54.     MSG_ACCEPTED=0,
  55.     MSG_DENIED=1
  56. };
  57.  
  58. enum accept_stat {
  59.     SUCCESS=0,
  60.     PROG_UNAVAIL=1,
  61.     PROG_MISMATCH=2,
  62.     PROC_UNAVAIL=3,
  63.     GARBAGE_ARGS=4,
  64.     SYSTEM_ERR=5
  65. };
  66.  
  67. enum reject_stat {
  68.     RPC_MISMATCH=0,
  69.     AUTH_ERROR=1
  70. };
  71.  
  72. /*
  73.  * Reply part of an rpc exchange
  74.  */
  75.  
  76. /*
  77.  * Reply to an rpc request that was accepted by the server.
  78.  * Note: there could be an error even though the request was
  79.  * accepted.
  80.  */
  81. struct accepted_reply {
  82.     struct opaque_auth    ar_verf;
  83.     enum accept_stat    ar_stat;
  84.     union {
  85.         struct {
  86.             u_long    low;
  87.             u_long    high;
  88.         } AR_versions;
  89.         struct {
  90.             caddr_t    where;
  91.             xdrproc_t proc;
  92.         } AR_results;
  93.         /* and many other null cases */
  94.     } ru;
  95. #define    ar_results    ru.AR_results
  96. #define    ar_vers        ru.AR_versions
  97. };
  98.  
  99. /*
  100.  * Reply to an rpc request that was rejected by the server.
  101.  */
  102. struct rejected_reply {
  103.     enum reject_stat rj_stat;
  104.     union {
  105.         struct {
  106.             u_long low;
  107.             u_long high;
  108.         } RJ_versions;
  109.         enum auth_stat RJ_why;  /* why authentication did not work */
  110.     } ru;
  111. #define    rj_vers    ru.RJ_versions
  112. #define    rj_why    ru.RJ_why
  113. };
  114.  
  115. /*
  116.  * Body of a reply to an rpc request.
  117.  */
  118. struct reply_body {
  119.     enum reply_stat rp_stat;
  120.     union {
  121.         struct accepted_reply RP_ar;
  122.         struct rejected_reply RP_dr;
  123.     } ru;
  124. #define    rp_acpt    ru.RP_ar
  125. #define    rp_rjct    ru.RP_dr
  126. };
  127.  
  128. /*
  129.  * Body of an rpc request call.
  130.  */
  131. struct call_body {
  132.     u_long cb_rpcvers;    /* must be equal to two */
  133.     u_long cb_prog;
  134.     u_long cb_vers;
  135.     u_long cb_proc;
  136.     struct opaque_auth cb_cred;
  137.     struct opaque_auth cb_verf; /* protocol specific - provided by client */
  138. };
  139.  
  140. /*
  141.  * The rpc message
  142.  */
  143. struct rpc_msg {
  144.     u_long            rm_xid;
  145.     enum msg_type        rm_direction;
  146.     union {
  147.         struct call_body RM_cmb;
  148.         struct reply_body RM_rmb;
  149.     } ru;
  150. #define    rm_call        ru.RM_cmb
  151. #define    rm_reply    ru.RM_rmb
  152. };
  153. #define    acpted_rply    ru.RM_rmb.ru.RP_ar
  154. #define    rjcted_rply    ru.RM_rmb.ru.RP_dr
  155.  
  156.  
  157. /*
  158.  * XDR routine to handle a rpc message.
  159.  * xdr_callmsg(xdrs, cmsg)
  160.  *     XDR *xdrs;
  161.  *     struct rpc_msg *cmsg;
  162.  */
  163. extern bool_t    xdr_callmsg();
  164.  
  165. /*
  166.  * XDR routine to pre-serialize the static part of a rpc message.
  167.  * xdr_callhdr(xdrs, cmsg)
  168.  *     XDR *xdrs;
  169.  *     struct rpc_msg *cmsg;
  170.  */
  171. extern bool_t    xdr_callhdr();
  172.  
  173. /*
  174.  * XDR routine to handle a rpc reply.
  175.  * xdr_replymsg(xdrs, rmsg)
  176.  *     XDR *xdrs;
  177.  *     struct rpc_msg *rmsg;
  178.  */
  179. extern bool_t    xdr_replymsg();
  180.  
  181. /*
  182.  * Fills in the error part of a reply message.
  183.  * _seterr_reply(msg, error)
  184.  *     struct rpc_msg *msg;
  185.  *     struct rpc_err *error;
  186.  */
  187. extern void    _seterr_reply();
  188.